<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<title>class YARP::Location - yarp: Ruby Standard Library Documentation</title>


<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>

<script src="../js/jquery-3.2.0.min.js"></script>

<script src="../js/vue.min.js"></script>
<script src="../js/js.cookie.min.js"></script>

<link href="../css/fonts.css" rel="stylesheet">
<link id='rdoccss' href="../css/rdoc.css" rel="stylesheet">
<link href="../css/carbon17.css" rel="stylesheet">

<script type="text/javascript">
  var rdoc_rel_prefix = "../";
  var index_rel_prefix = "../";
  var darkModeCsseHref = "../css/rdoc-dm.css"
  var defaultModeCssHref = "../css/rdoc.css"
  // var cssDarkmode = Cookies.get('darkmode');
  
  if( Cookies.get("darkmode") == "true") {
	$('#rdoccss').attr("href", darkModeCsseHref);
}

//  https://cssdeck.com/blog/simple-jquery-stylesheet-switcher/

document.write('<style type="text/css">body{display:none}</style>');

</script>


</head>
<body id="top" role="document" class="class">
  <!-- this is class.html -->

  <div id='actionbar' >
    <div class='wrapper mdiv'>
      <ul class='grids g0'></ul>
    </div> 
    <!-- VERSION HEADER for 3.3.0.preview2 NOT FOUND -->
  </div> <!-- end action bar -->

  <div class='wrapper hdiv'>

    


    <nav id='vapp' role="navigation">
    <div id="project-navigation">
      <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2><a href="../index.html" rel="home">Home</a></h2>

  <div id="table-of-contents-navigation"  >
    <a href="../table_of_contents.html#pages">Pages</a>
    <a href="../table_of_contents.html#classes">Classes</a>
    <a href="../table_of_contents.html#methods">Methods</a>
  </div>
</div>

      <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

    </div>


    

    <button id='toggleThing' @click="toggleNav()" >Show/hide navigation</button>
    <div :class="isOpen ? 'block' : 'hidden' " id='toggleMe'>
      <div id="class-metadata">
        
        
<div id="parent-class-section" class="nav-section">
  <h3>Parent</h3>

  <p class="link"><a href="../Object.html">Object</a>
</div>

        
        
        
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    <li ><a href="#method-c-new">::new</a>
    <li ><a href="#method-c-null">::null</a>
    <li ><a href="#method-i-3D-3D">#==</a>
    <li ><a href="#method-i-copy">#copy</a>
    <li ><a href="#method-i-deconstruct_keys">#deconstruct_keys</a>
    <li ><a href="#method-i-end_column">#end_column</a>
    <li ><a href="#method-i-end_line">#end_line</a>
    <li ><a href="#method-i-end_offset">#end_offset</a>
    <li ><a href="#method-i-inspect">#inspect</a>
    <li ><a href="#method-i-join">#join</a>
    <li ><a href="#method-i-pretty_print">#pretty_print</a>
    <li ><a href="#method-i-slice">#slice</a>
    <li ><a href="#method-i-start_column">#start_column</a>
    <li ><a href="#method-i-start_line">#start_line</a>
    <li ><a href="#method-i-start_line_slice">#start_line_slice</a>
  </ul>
</div>

      </div>
     </div>
    </nav>


    <div id='extraz'><div class='adzbox-index'  >
      
     </div>         
    </div>

    <main role="main" aria-labelledby="class-YARP::Location">
    <h1 id="class-YARP::Location" class="class">
      class YARP::Location
    </h1>

    <section class="description">
    
<p>This represents a location in the source.</p>

    </section>

      <section id="5Buntitled-5D" class="documentation-section">



        <section class="attribute-method-details" class="method-section">
        <header>
        <h3>Attributes</h3>
        </header>

          <div id="attribute-i-comments" class="method-detail">
            <div class="method-heading attribute-method-heading">
              <span class="method-name">comments</span><span
                class="attribute-access-type">[R]</span>
            </div>

            <div class="method-description">
              <p>The list of comments attached to this location</p>
              </div>
            </div>
          <div id="attribute-i-length" class="method-detail">
            <div class="method-heading attribute-method-heading">
              <span class="method-name">length</span><span
                class="attribute-access-type">[R]</span>
            </div>

            <div class="method-description">
              <p>The length of this location in bytes.</p>
              </div>
            </div>
          <div id="attribute-i-start_offset" class="method-detail">
            <div class="method-heading attribute-method-heading">
              <span class="method-name">start_offset</span><span
                class="attribute-access-type">[R]</span>
            </div>

            <div class="method-description">
              <p>The byte offset from the beginning of the source where this location starts.</p>
              </div>
            </div>
            </section>


                <section id="public-class-5Buntitled-5D-method-details" class="method-section">
                <header>
                <h3>Public Class Methods</h3>
                </header>

                  <div id="method-c-new" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">new</span><span
                                class="method-args">(source, start_offset, length)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              

                              <div class="method-source-code" id="new-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 56</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">start_offset</span>, <span class="ruby-identifier">length</span>)
  <span class="ruby-ivar">@source</span> = <span class="ruby-identifier">source</span>
  <span class="ruby-ivar">@start_offset</span> = <span class="ruby-identifier">start_offset</span>
  <span class="ruby-ivar">@length</span> = <span class="ruby-identifier">length</span>
  <span class="ruby-ivar">@comments</span> = []
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-c-null" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">null</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              

                              <div class="method-source-code" id="null-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 139</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">null</span>
  <span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                          </section>

                <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
                <header>
                <h3>Public Instance Methods</h3>
                </header>

                  <div id="method-i-3D-3D" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">==</span><span
                                class="method-args">(other)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              

                              <div class="method-source-code" id="3D-3D-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 123</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">==</span>(<span class="ruby-identifier">other</span>)
  <span class="ruby-identifier">other</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Location</span>) <span class="ruby-operator">&amp;&amp;</span>
    <span class="ruby-identifier">other</span>.<span class="ruby-identifier">start_offset</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">start_offset</span> <span class="ruby-operator">&amp;&amp;</span>
    <span class="ruby-identifier">other</span>.<span class="ruby-identifier">end_offset</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">end_offset</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-copy" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">copy</span><span
                                class="method-args">(**options)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Create a new location object with the given options.</p>

                              <div class="method-source-code" id="copy-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 64</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">copy</span>(<span class="ruby-operator">**</span><span class="ruby-identifier">options</span>)
  <span class="ruby-constant">Location</span>.<span class="ruby-identifier">new</span>(
    <span class="ruby-identifier">options</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">:source</span>) { <span class="ruby-identifier">source</span> },
    <span class="ruby-identifier">options</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">:start_offset</span>) { <span class="ruby-identifier">start_offset</span> },
    <span class="ruby-identifier">options</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">:length</span>) { <span class="ruby-identifier">length</span> }
  )
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-deconstruct_keys" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">deconstruct_keys</span><span
                                class="method-args">(keys)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              

                              <div class="method-source-code" id="deconstruct_keys-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 115</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">deconstruct_keys</span>(<span class="ruby-identifier">keys</span>)
  { <span class="ruby-value">start_offset:</span> <span class="ruby-identifier">start_offset</span>, <span class="ruby-value">end_offset:</span> <span class="ruby-identifier">end_offset</span> }
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-end_column" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">end_column</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>The column number in bytes where this location ends from the start of the line.</p>

                              <div class="method-source-code" id="end_column-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 111</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">end_column</span>
  <span class="ruby-identifier">source</span>.<span class="ruby-identifier">column</span>(<span class="ruby-identifier">end_offset</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-end_line" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">end_line</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>The line number where this location ends.</p>

                              <div class="method-source-code" id="end_line-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 99</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">end_line</span>
  <span class="ruby-identifier">source</span>.<span class="ruby-identifier">line</span>(<span class="ruby-identifier">end_offset</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-end_offset" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">end_offset</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>The byte offset from the beginning of the source where this location ends.</p>

                              <div class="method-source-code" id="end_offset-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 83</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">end_offset</span>
  <span class="ruby-identifier">start_offset</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">length</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-inspect" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">inspect</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns a string representation of this location.</p>

                              <div class="method-source-code" id="inspect-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 73</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>
  <span class="ruby-node">&quot;#&lt;YARP::Location @start_offset=#{@start_offset} @length=#{@length}&gt;&quot;</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-join" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">join</span><span
                                class="method-args">(other)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns a new location that stretches from this location to the given other location. Raises an error if this location is not before the other location or if they don’t share the same source.</p>

                              <div class="method-source-code" id="join-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 132</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">join</span>(<span class="ruby-identifier">other</span>)
  <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;Incompatible sources&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">source</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">source</span>
  <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;Incompatible locations&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">start_offset</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">start_offset</span>

  <span class="ruby-constant">Location</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">start_offset</span>, <span class="ruby-identifier">other</span>.<span class="ruby-identifier">end_offset</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">start_offset</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-pretty_print" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">pretty_print</span><span
                                class="method-args">(q)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              

                              <div class="method-source-code" id="pretty_print-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 119</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">pretty_print</span>(<span class="ruby-identifier">q</span>)
  <span class="ruby-identifier">q</span>.<span class="ruby-identifier">text</span>(<span class="ruby-node">&quot;(#{start_offset}...#{end_offset})&quot;</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-slice" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">slice</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>The source code that this location represents.</p>

                              <div class="method-source-code" id="slice-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 78</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">slice</span>
  <span class="ruby-identifier">source</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-identifier">start_offset</span>, <span class="ruby-identifier">length</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-start_column" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">start_column</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>The column number in bytes where this location starts from the start of the line.</p>

                              <div class="method-source-code" id="start_column-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 105</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">start_column</span>
  <span class="ruby-identifier">source</span>.<span class="ruby-identifier">column</span>(<span class="ruby-identifier">start_offset</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-start_line" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">start_line</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>The line number where this location starts.</p>

                              <div class="method-source-code" id="start_line-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 88</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">start_line</span>
  <span class="ruby-identifier">source</span>.<span class="ruby-identifier">line</span>(<span class="ruby-identifier">start_offset</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-start_line_slice" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">start_line_slice</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>The content of the line where this location starts before this location.</p>

                              <div class="method-source-code" id="start_line_slice-source">
            <pre><span class="ruby-comment"># File yarp.rb, line 93</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">start_line_slice</span>
  <span class="ruby-identifier">offset</span> = <span class="ruby-identifier">source</span>.<span class="ruby-identifier">line_offset</span>(<span class="ruby-identifier">start_offset</span>)
  <span class="ruby-identifier">source</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-identifier">offset</span>, <span class="ruby-identifier">start_offset</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">offset</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                          </section>

              </section>
              </main>



            </div>  <!--  class='wrapper hdiv' -->


<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a></p>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.4.0.</p>
<p>Based on <a href="https://github.com/ged/darkfish/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.</p>

  
    <p><p><a href="https://ruby-doc.org">Ruby-doc.org</a> is provided by <a href="https://jamesbritt.com">James Britt</a> and <a href="https://neurogami.com">Neurogami</a>.</p><p><a href="https://jamesbritt.bandcamp.com/">Maximum R+D</a>.  </p>
</p>
  
  </footer>

<script type="text/javascript">


  let ads  = $("#carbonads-container").children().detach();


  function swapMode() {
    var cookieName = 'darkmode';
    var cssDarkmode = Cookies.get(cookieName);
    console.log("***** swapMode! " + cssDarkmode + " *****");


    if (cssDarkmode == "true") {
      console.log("We have dark mode, set the css to light ...");
      $('#rdoccss').attr("href", defaultModeCssHref);
      $('#cssSelect').text("Dark mode");
      cssDarkmode = "false";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    } else {
      console.log("We not have dark mode, set the css to dark ...");
      $('#rdoccss').attr("href", darkModeCsseHref);
      $('#cssSelect').text("Light mode");
      cssDarkmode = "true";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    }

    console.log("  --------------- ");
  }


const vueCssApp = new Vue({
el: '#menubar',
data: {
isDark: false
},
methods: {
toggleClass: function(event){
this.isDark = !this.isDark;
}
}
})

const vueApp = new Vue({
el: '#vapp',
data: { 
isOpen: true
},

mounted() {
this.handleResize();
this.manage_mob_classes();
window.addEventListener('resize', this.handleResize)
//this.isOpen !=  (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},
destroyed() {
window.removeEventListener('resize', this.handleResize)
},
created() {
//manage_mob_classes();
},

methods : {
isMobile() {
  return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},

  handleResize() {
    if (!this.isMobile()) {
      this.isOpen = window.innerWidth > 800;
    }
  },

  manage_mob_classes() {
    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
      $("nav").addClass("mob_nav");
      $("main").addClass("mob_main");
      $("#extraz").addClass("mob_extraz");
      $("#carbonads-container").addClass("mob_carbonads-container");
      this.isOpen  = false;
    } else {
      $("nav").removeClass("mob_nav") 
        $("main").removeClass("mob_main");
      $("#extraz").removeClass("mob_extraz");
      $("#carbonads-container").removeClass("mob_carbonads-container");
      this.isOpen  = true;
    }
  },

  toggleNav() {
    this.isOpen =! this.isOpen ;
    // alert("Toggle nav!");
    console.log("toggleNav() click: " + this.isOpen );
  }
}
})

$("#carbonads-container").append(ads);


$(function() {

    var darkmode = Cookies.get("darkmode");
    console.log("Document ready: " + darkmode);

    if ( darkmode  == "true" ) {
      $('#cssSelect').text("Light mode");
    } else {
      $('#cssSelect').text("Dark mode");
     }

    $('body').css('display','block');
    });

</script>

    
  </body> 
</html>

